﻿// 206 循环队列练习.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <deque>

using namespace std;

/*
http://oj.daimayuan.top/course/7/problem/417

队列是一种数据结构。现在你要支持几种操作：

push x，将 x这个元素放到队尾。

pop，表示将队首的元素删除。

query k，询问从队首往后数第 k个元素是多少。

输入格式
第一行一个整数 m，表示操作个数。

接下来 m行，每行一个上面所述的操作。

输出格式
输出若干行，对于每个查询操作，输出答案。

样例输入
10
push 1
push 2
query 1
query 2
push 3
query 1
pop
query 1
push 4
query 1
样例输出
1
2
1
2
2
数据规模
对于 100%的数据，保证 1≤m≤106。

对于 push 操作，保证 1≤x≤106。

对于 pop 操作，保证队列非空。

对于 query 操作，保证 k≥1且 k不超过队列里面的元素个数。
*/

deque<int > q;
int n;
int main()
{
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		char op[10]; int a;
		scanf("%s", &op);
		if (op[0] == 'p' && op[1] == 'u') {
			scanf("%d", &a);
			q.push_back(a);
		}
		else if (op[0] == 'p' && op[1] == 'o') {
			q.pop_front();
		}
		else if (op[0] == 'q') {
			scanf("%d", &a);
			printf("%d\n", q[a - 1]);
		}
	}

	return 0;
}
